package main

import "fmt"

func main() {
	s1 := make([]int, 2, 4)
	s2 := append(s1, 1)
	fmt.Printf("s1 %p, %p, l=%-2d, c=%-2d, %v\n", &s1, &s1[0], len(s1), cap(s1), s1)
	// s1输出为s1 0xc000008048, 0xc000012180, l=3 , c=4 , [0 0 0]
	// s1元素有[0 0 0]
	fmt.Printf("s2 %p, %p, l=%-2d, c=%-2d, %v\n", &s2, &s2[0], len(s2), cap(s2), s2)
	// s2输出为s2 0xc000008060, 0xc000012180, l=4 , c=4 , [0 0 0 1]
	// s2元素有[0 0 0 1]

	//s1修改元素会影响会影响到s2,分两种情况，1): l>=cap s2的底数数组会变，容量和长度也会变. 2) l<=cap s2的底数数组不变，容量和长度保持不变

	//s2再增加一个元素会怎么样？ 答：s2再增加元素， s2的len会变，cap不变，s2元素会变，s2底层数组会变
}
